import moment from 'moment';

// 自定义moment库中.calendar()方法的日期格式
moment.calendarFormat = function (myMoment, now) {
  const diff = myMoment.diff(now, 'days', true);

  const retVal = (myMoment.year() !== now.year()) ? 'otherYears' :
    diff < -2 ? 'sameElse' :
      diff < -1 ? 'beforeLastDay' :
        diff < 0 ? 'lastDay' :
          diff < 1 ? 'sameDay' : 'sameElse';
  return retVal;
};

export const formatMoment = moment;

// 格式化展示时间
// srvTime:1595988034662 time: "2020-07-28 18:17"
export const formatTime = (srvTime: number, time: string) => {
  const timeFormatted = time.replace(/-/g, '/');
  const contentDate = new Date(timeFormatted);
  const nowDate = new Date(srvTime);
  // 若是非当年，则显示带年份的绝对时间，即详细日期+时间（例：2019-04-01 19:48）
  if (contentDate.getFullYear() != nowDate.getFullYear()) {
    return time;
  }
  const contentDateSpecified = new Date(
    `${contentDate.getFullYear}/${contentDate.getMonth() +
    1}/${contentDate.getDate()}`
  );
  const nowDateSpecified = new Date(
    `${nowDate.getFullYear()}/${nowDate.getMonth() + 1}/${nowDate.getDate()}`
  );
  const dateDiff = nowDateSpecified.getTime() - contentDateSpecified.getTime();

  // 一天的毫秒数
  const dayMs = 24 * 60 * 60 * 1000;
  // 若是3天前，则显示绝对时间，即详细日期+时间（例：04-01 19:48）；
  // 2020-7-26
  if (dateDiff >= 3 * dayMs) {
    return `${contentDate.getMonth() + 1}-${contentDate.getDate()} ${time.split(' ')[1]
    }`;
  }
  // 若是昨天和前天，则显示相对时间（例：昨天 19:48、前天 19:48）；
  if (dateDiff >= 2 * dayMs) {
    return `前天 ${time.split(' ')[1]}`;
  }
  if (dateDiff >= 1 * dayMs) {
    return `昨天 ${time.split(' ')[1]}`;
  }
  // 若是当天，则显示绝对时间，即详细时间（例：19:48）；
  return time.split(' ')[1];
};
